home *** CD-ROM | disk | FTP | other *** search
/ Shareware Overload Trio 2 / Shareware Overload Trio Volume 2 (Chestnut CD-ROM).ISO / dir44 / dungn32.zip / DUNGEON.FOR < prev    next >
Text File  |  1994-10-07  |  6KB  |  214 lines

  1. C Main program for DUNGEON
  2. C
  3. C COPYRIGHT 1980, 1990, INFOCOM COMPUTERS AND COMMUNICATIONS, CAMBRIDGE MA.
  4. C ALL RIGHTS RESERVED, COMMERCIAL USAGE STRICTLY PROHIBITED
  5. C WRITTEN BY R. M. SUPNIK
  6. C
  7. C 16-Aug-94     RMS     Version 3.2.
  8. C 30-Jun-92     RMS     Changed file names to lower case.
  9. C 29-Jun-92     RMS     Changed OUTCH to 6 for VAX, UNIX compatibility.
  10. C
  11.       PROGRAM DUNGEO
  12. C
  13. C Declarations
  14. C
  15.       IMPLICIT INTEGER (A-Z)
  16.       LOGICAL INITFL
  17.       INCLUDE 'dparam.for'
  18. C
  19. C Data statements for constant arrays
  20. C
  21.       DATA VMAJ/3/,VMIN/2/,VEDIT/'A'/
  22. C
  23.       DATA BATDRP/66,67,68,69,70,71,72,65,73/
  24. C
  25.       DATA SCOLDR/XNORTH,BKTWI,XSOUTH,BKVAU,XEAST,BKVE,XWEST,BKVW/
  26.       DATA SCOLWL/BKVW,271,XEAST,BKVE,272,XWEST,
  27.      1BKTWI,270,XSOUTH,BKVAU,269,XNORTH/
  28. C
  29.       DATA CPDR/XNORTH,-8,XNE,-7,XEAST,1,XSE,9,
  30.      1XSOUTH,8,XSW,7,XWEST,-1,XNW,-9/
  31.       DATA CPWL/269,-8,270,8,271,1,272,-1/
  32.       DATA CPVEC/1,1,1,1,1,1,1,1,
  33.      11,0,-1,0,0,-1,0,1,
  34.      21,-1,0,1,0,-2,0,1,
  35.      31,0,0,0,0,1,0,1,
  36.      41,-3,0,0,-1,-1,0,1,
  37.      51,0,0,-1,0,0,0,1,
  38.      61,1,1,0,0,0,1,1,
  39.      71,1,1,1,1,1,1,1/
  40. C
  41.       DATA XELNT/1,2,3,3/
  42.  
  43. C DUNGEON, PAGE 2
  44. C
  45. C 1) Initialize data structures
  46. C 2) Initialize files
  47. C 3) Play game
  48. C
  49.       MLNT=0                                    ! init array counters.
  50.       OLNT=0                                    ! array limits are parameters
  51.       RLNT=0
  52.       VLNT=0
  53.       ALNT=0
  54.       CLNT=0
  55.       XLNT=1
  56.       R2LNT=0
  57. C
  58.       LTSHFT=10                                 ! set up state variables.
  59.       MXSCOR=LTSHFT
  60.       EGSCOR=0
  61.       EGMXSC=0
  62.       MXLOAD=100
  63.       RWSCOR=0
  64.       DEATHS=0
  65.       MOVES=0
  66.       PLTIME=0
  67.       MUNGRM=0
  68.       HS=0
  69.       PRSA=0                                    ! clear parse vector.
  70.       PRSI=0
  71.       PRSO=0
  72.       PRSCON=1
  73.       OFLAG=0                                   ! clear orphans.
  74.       OACT=0
  75.       OPREP1=0
  76.       OOBJ1=0
  77.       OPREP=0
  78.       ONAME=' '
  79.       OPREP2=0
  80.       OOBJ2=0
  81.       BUNLNT=0                                  ! clear bunch vector.
  82.       BUNSUB=0
  83.       DO 100 I=1,BUNMAX
  84.         BUNVEC(I)=0
  85. 100   CONTINUE
  86.       THFFLG=.FALSE.                            ! thief not introduced but
  87.       THFACT=.TRUE.                             ! is active.
  88.       SWDACT=.FALSE.                            ! sword is inactive.
  89.       SWDSTA=0                                  ! sword is off.
  90. C
  91.       MBASE=0                                   ! init melee base.
  92.       INPCH=5                                   ! tty input
  93.       OUTCH=6                                   ! tty output.
  94.       DBCH=2                                    ! data base.
  95.  
  96. C DUNGEON, PAGE 3
  97. C
  98. C Init all arrays.
  99. C
  100.       DO 200 I=1,CMAX                           ! clear clock events
  101.         CFLAG(I)=.FALSE.
  102.         CCNCEL(I)=.FALSE.
  103.         CTICK(I)=0
  104.         CACTIO(I)=0
  105. 200   CONTINUE
  106. C
  107.       DO 300 I=1,FMAX                           ! clear flags.
  108.         FLAGS(I)=.FALSE.
  109. 300   CONTINUE
  110.       EGYPTF=.TRUE.                             ! some start as true.
  111.       CAGETF=.TRUE.
  112.       MR1F=.TRUE.
  113.       MR2F=.TRUE.
  114.       FOLLWF=.TRUE.
  115.       DO 400 I=1,SMAX                           ! clear switches.
  116.         SWITCH(I)=0
  117. 400   CONTINUE
  118.       ORMTCH=4                                  ! number of matches.
  119.       LCELL=1
  120.       PNUMB=1
  121.       MDIR=270
  122.       MLOC=MRB
  123.       CPHERE=10
  124. C
  125.       DO 500 I=1,R2MAX                          ! clear room 2 array.
  126.         R2(I)=0
  127.         O2(I)=0
  128. 500   CONTINUE
  129. C
  130.       DO 600 I=1,XXMAX                          ! clear travel array.
  131.         TRAVEL(I)=0
  132. 600   CONTINUE
  133. C
  134.       DO 700 I=1,VMAX                           ! clear villains arrays.
  135.         VOPPS(I)=0
  136.         VPROB(I)=0
  137.         VILLNS(I)=0
  138.         VBEST(I)=0
  139.         VMELEE(I)=0
  140. 700   CONTINUE
  141.  
  142. C DUNGEON, PAGE 4
  143. C
  144.       DO 800 I=1,OMAX                           ! clear object arrays.
  145.         ODESC1(I)=0
  146.         ODESC2(I)=0
  147.         ODESCO(I)=0
  148.         OREAD(I)=0
  149.         OACTIO(I)=0
  150.         OFLAG1(I)=0
  151.         OFLAG2(I)=0
  152.         OFVAL(I)=0
  153.         OTVAL(I)=0
  154.         OSIZE(I)=0
  155.         OCAPAC(I)=0
  156.         OCAN(I)=0
  157.         OADV(I)=0
  158.         OROOM(I)=0
  159. 800   CONTINUE
  160. C
  161.       RDESC2=0                                  ! clear desc base ptr.
  162.       DO 900 I=1,RMAX                           ! clear room arrays.
  163.         RDESC1(I)=0
  164.         RACTIO(I)=0
  165.         RFLAG(I)=0
  166.         RVAL(I)=0
  167.         REXIT(I)=0
  168. 900   CONTINUE
  169. C
  170.       DO 1000 I=1,MMAX                          ! clear message directory.
  171.         RTEXT(I)=0
  172. 1000  CONTINUE
  173. C
  174.       DO 1100 I=1,AMAX                          ! clear adventurer's arrays.
  175.         AROOM(I)=0
  176.         ASCORE(I)=0
  177.         AVEHIC(I)=0
  178.         AOBJ(I)=0
  179.         AACTIO(I)=0
  180.         ASTREN(I)=0
  181.         AFLAG(I)=0
  182. 1100  CONTINUE
  183. C
  184.       DBGFLG=0
  185.       PRSFLG=0
  186.       GDTFLG=1
  187. C
  188.       FROMDR=0                                  ! init scol goodies.
  189.       SCOLRM=0
  190.       SCOLAC=0
  191. C
  192.       IF(INITFL(X)) CALL GAME                   ! if init files, play game.
  193.       STOP ' '                                 ! done
  194.       END
  195.  
  196. C TXCRYP - Subroutine to encrypt/decrypt text strings.
  197. C
  198. C This subroutine performs a reversible encryption on a text string.
  199. C The purpose is not to protect the data base but to make it more
  200. C difficult for the casual game user to read the data base file.
  201. C It is located here, rather than in the SUBRoutine module, because
  202. C it is used by both the game and the separate data base compiler.
  203. C
  204.       SUBROUTINE TXCRYP(R,LINE)
  205.       IMPLICIT INTEGER (A-Z)
  206.       CHARACTER*(*) LINE
  207. C
  208.       DO 100 I=1,LEN(LINE)
  209.         X=(R.AND.31)+I
  210.         LINE(I:I)=CHAR(ICHAR(LINE(I:I)).XOR.X)
  211. 100   CONTINUE
  212.       RETURN
  213.       END
  214.